COMO MANIPULAR DATAS

Como tratar último dia em PHP para relatório do dia anterior?

Como tratar último dia em PHP para relatório do dia anterior?

Para controlar a data em dias uso date e mktime, depois coplemento para virada do mês com explode.

Quando vou trabalhar com um período em dias no PHP costumo usar o seguinte código:

<?php

    $dia = date('d') -1; // Esse menos 1 aqui é para se referir ao dia anterior.
    $mes = date('m'); // O date pega a data atual.
    $ano = date('Y'); // Ele recebe como parâmetro o d, m e Y para dia, mês e ano respectivamente.
    $data = mktime(0,0,0,$mes,$dia,$ano);

// A função mktime() retorna o timestamp Unix dos argumentos informados.    

    $data = date('Y-m-d',$data); // Aqui o date não considera a data atual, mas sim o segundo parâmetro informado com a data definida anteriormente e junta ano, mês e dia para inserir a data no formato mais usado em banco de dados, o formato date original.

?>

Nesse exemplo estou pegando o dia anterior mas poderiam ser 15 ou 90 dias, ou qualquer outra quantidade, bastaria substituir o 1 por esses valores.

Mas se fosse usar em uma rotina assim como está, em que todos os dias tivessem que pegar o dia anterior, na virada do mês provavelmente teria problema, não pela data em si, pois essa já estaria correta, mas pelo dia, mês ou ano que se fosse o primeiro do próximo ciclo ficaria zerado. 

No caso do dia 01/10/21 se fosse usar $dia."/".$mes."/".$ano; ficaria 0/10/21, agora se fosse 01/01/21 ficaria 0/0/22 e não é esse o resultado esperado.

então complemento com explode, assim:

if($dia == 0){ // Vejo se o dia está zerado, no caso de dia primeiro (1 - 1).

    $ultimoDia = explode('-',$data); // Uso explode na data formatada.

    $ano = $ultimoDia[0]; // Insiro a parte referente ao ano na variável respectiva.

    $mes = $ultimoDia[1]; // Faço o mesmo para o mês.

    $dia = $ultimoDia[2]; // Também para o dia.

}

No caso o explode transforma uma string em um array de substring, após fazer a quebra do texto inicial de acordo com um limitador, nesse exemplo o traço "-".

Veja mais em:

Como preencher zero a esquerda em PHP?

Como tratar data em PHP?

Como usar o explode do PHP no JavaScript?



Qual letra usar para o mês no date() com zero?

Qual letra usar para o mês no date() com zero?

Para usar mês com zero basta usar 'm' no date().

 

Ficando assim:

$mes = date('m');

Para escrever a data com barras como é usada informalmente no Brasil.

$data = date('d/m/y');

echo $mes; //retorna: 06

echo $data; //retorna: 13/06/20

Esses valores são apenas exemplos, pois date() apenas retorna a data atual.



botão de compartilhamento whatsapp botão de compartilhamento no twiter botão de compartilhamento do site botão de compartilhamento no linkedin botão de compartilhamento whatsapp